package com.jzo2o.canal.model;

import com.jzo2o.canal.constants.OperateType;
import lombok.Data;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * canal mq信息
 * Canal消息队列传输模型，封装Canal采集的数据库变更信息
 */
@Data
public class CanalMqInfo implements Serializable {

    /**
     * 数据库名称
     */
    private String database;

    /**
     * 表名称
     */
    private String table;

    /**
     * 是否为DDL操作标识
     */
    private Boolean isDd1;

    /**
     * 操作类型（对应OperateType枚举，如INSERT/UPDATE/DELETE）
     */
    private String type;

    /**
     * 事件时间戳（毫秒）
     */
    private Long es;

    /**
     * 消息发送时间戳（毫秒）
     */
    private Long ts;

    /**
     * 变更数据列表（每条数据为字段名-字段值的映射）
     */
    private List<Map<String, Object>> data;

    /**
     * 判断是否为保存/更新操作（非删除操作）
     * @return true-保存/更新；false-删除
     */
    public boolean getIsSave() {
        return !OperateType.DELETE.equals(type);
    }
}
